#!/bin/bash
#-------------HEADER-----------------------------------------------------------|
#AUTOR:
# Jefferson Rocha <lrcjefferson@gmail.com>
#
#PROGRAMA:
# Show do Milhão do Linux
#------------------------------------------------------------------------------|

# (Váriaveis locais)
programa="Show do milhão, versão 1.0"
total=0 # Zerando var

# (Funções)
sound() {
    ogg123 milhao.ogg 2>&- & sleep 1.7s
}

variavel_nula() {
        dialog --stdout --title "Aviso!" --backtitle "$programa" \
               --infobox "Se não escolher nada você vai ganhar um milhão em outro lugar, $nome!" 5 40 ; sleep 4    

}


# (Inicio do programa)
dialog --stdout --title "Bem vindo!" --backtitle "$programa" \
       --extra-button --extra-label "Sou nutella, é muito pra mim." \
       --ok-label "Ok, MR Slackjeff" \
       --msgbox "
Não vale colar, pesquisar ou nenhuma coisa desse tipo que seja coisa de usuário
Nutella!
Essa é a minha roleta russa, ou você sabe ou você chora.

São 10 perguntas do misturadas, cada pergunta certa é que vale
a 1 ponto, se você tirar uma pontuação >= a 8 você está indo bem.
Tirou abaixo disso, volte a estudar porque você não é CAVEIRA caral**
Você é apenas uma muleque que fica passeando pelo X enquanto seus colegas estão,
aprendendo e virando o S.O de cabeça pra baixo!.
" 0 0
if [[ $? -eq 3 ]]; then
    echo "Nutella, puff."
    exit
   
fi

ogg123 participante.ogg 2>&-
while true ;do
nome=$(
    dialog --stdout --title "Seu nome" --backtitle "$programa" \
           --inputbox "
Antes de prosseguir preciso saber o seu nome! pra que?
Bom é pra roubar seu cartão de crédito.
Bota loga o nome ai" 0 0
)
if [ ! -z $nome ]; then
    break
else # É nulo? loop nele!
   dialog --stdout --title "Aviso!" --backtitle "$programa" \
          --infobox "
Enquanto não por seu nome eu não vou prosseguir.
Eu sou difícil e você sabe!" 0 0; sleep 4
fi
done

ogg123 inicio.ogg 2>&-

pergunta1=$(
    sound
    dialog --stdout --title "Pergunta 1" --backtitle "$programa" \
           --checklist "Qual comando é utilizado para remover arquivos e pastas?" \
           0 0 0              \
           rm ""       off    \
           mkdir    "" off    \
           "ls -l"  "" off    \
           cp       "" off    \
           ls       "" off    \
           "rm -r"  "" off    \
           chmod    "" off    )
    if [ "$pergunta1" = 'rm "rm -r"' ]; then
        let total++
    elif [ -z $pergunta1 ]; then
        variavel_nula
    fi

# Pergunta 2
    sound
    dialog --stdout --title "Pergunta 2" --backtitle "$programa" \
           --yes-label "Verdadeiro" --no-label "Falso" \
           --yesno "
.Bashrc que está presente em sua pasta 'Home' serve para fazer configurações,
de todos usuários após o login.

Verdadeiro ou Falso?" 0 0 
    if [ $? -eq 1 ]; then
        let total++
    fi

pergunta3=$(
    sound
    dialog --stdout --title "Pergunta 3" --backtitle "$programa" \
           --radiolist "
Selecione uma das alternativas!

Sabemos que o comando diff é muito importante para os programadores.
Quando a questão é controle! O que ele compara?" \
           0 0 0 \
           1 "Compara a versão do bash"                                         off \
           2 "Compara as versões do programa no github"                         off \
           3 "Faz a comparação de arquivos/programas para lançamento de patchs" off \
           4 "Compara as versões do programa e usa o sftp para se conectar"     off )
    if [ $pergunta3 -eq 3 ]; then
        let total++
    elif [ -z $pergunta ]; then
        variavel_nula
    fi

# Pergunta 4
    sound
    dialog --stdout --title "Pergunta 4" --backtitle "$programa" \
           --yes-label "Verdadeiro" --no-label "Falso" \
           --yesno "
Sabemos que o Kernel Linux é uma distribuição difundida no mundo e
seu criador Richard Stallman fez uma cópia discarada do UNIX.

Essa afirmação é verdadeira ou falsa?" 0 0
    if [ $? -eq 1 ]; then
        let total++
    fi

pergunta5=$(
    sound
    dialog --stdout --title "Pergunta 5" --backtitle "$programa" \
           --inputbox "Qual nome do Criador do Kernel Linux?" 0 0 
)
    pergunta5=${pergunta5,,}
    if [ "$pergunta5" = "linus torvalds" ]; then
        let total++
    fi 

pergunta6=$(
    sound
    dialog --stdout --title "Pergunta 6" --backtitle "$programa" \
           --radiolist "
Qual foi a sêquencia de criação destes projetos!?" \
           0 0 0 \
           1 "GNU/Linux, Minix, UNIX"                         off \
           2 "Fernandinho beira mar, Pedro meu vizinho, UNIX" off \
           3 "UNIXX, Minix, GNU/Linux"                        off \
           4 "Carla perez, UNIX, Ivete sangalo, Luan santana" off \
           5 "UNIX, Minix, GNU/Linux"                         off \
           6 "Minix, UNIX, GNU/Linux"                         off \
           7 "UNIX, Windows, MAC, Kurumin"                    off \
           8 "Windows, UNIX, GNU/Linux, MAC"                  off )
    if [ $pergunta6 -eq 5 ]; then
        let total++
    elif [ -z $pergunta6 ]; then
        variavel_nula
    fi

pergunta7=$(
    sound
    dialog --stdout --title "Pergunta 7" --backtitle "$programa" \
           --radiolist "
Sabemos que um Vetor ou Array consegue armazenar várias 'strings ou números' no mesmo local.
Diferentemente de uma simples váriavel, que consegue armazer somente uma 'string ou número'

Veja o exemplo:
array1=(pipoca massinha pera 'pão com ovo')

Preciso fazer uma chamada de todas strings em seguida, preciso chamar o 'pão com ovo' somente.
Faça sua escolha:" \
           0 0 0 \
           1 'array1${{all}} , array1${{3}}'    off \
           2 "array1(1,2,3) , array1(2)"        off \
           3 '${array[@]} , ${array[3]}'        off )
    if [ $pergunta7 -eq 3 ]; then
        let total++
    elif [ -z $pergunta7 ]; then
        variavel_nula
    fi

pergunta8=$(
    sound
    dialog --stdout --title "Pergunta 8" --backtitle "$programa" \
           --radiolist "
O que o teste está testando e esse código irá funcionar?
equal=;[ -z $equal ]&& exit 1 || continue" \
            0 0 0 \
            1 "equal é nula, sim irá funcionar"            off \
            2 "equal é igual, sim irá funcionar"           off \
            3 "equal é igual ou maior, não irá funcionar"  off \
            4 "equal é não nula, sim irá funcionar"        off )
    if [ $pergunta8 -eq 1 ]; then
        let total++
    elif [ -z $pergunta8 ]; then
        variavel_nula
    fi

# Pergunta 9
    sound
    dialog --stdout --title "Pergunta 9" --backtitle "$programa" \
           --yes-label "Verdadeiro" --no-label "Falso" \
           --yesno "
O dpkg é uma ferramenta de baixo nível, serve para manutenção de pacotes na distribuição debian.
Ele teve seu primeiro código escrito em perl posteriormente teve uma grande parte,
reescrito em C.

Essa afirmação é verdadeira ou falsa?" 0 0
    if [ $? -eq 0 ]; then
        let total++
    fi

pergunta10=$(
    sound
    dialog --stdout --title "Pergunta 10" --backtitle "$programa" \
           --checklist "
O comando touch como sabemos serve para criar arquivos. (sabemos que isso não presta).
Selecione 'DUAS' formas práticas de verificar se o arquivo existe e criar.
" \
           0 0 0 \
           1 "[ ! -e arquivo ]&& touch arquivo" off \
           2 "> arquivo"                        off \
           3 "echo 'texto' > arquivo"           off \
           3 "[ ! -e arquivo ]&& > arquivo && echo 'texto legal' > arquivo" off )
    if [ $pergunta10 -eq 2 ]; then
        let total++
    fi

if [ $total -ge 8 ]; then
    final=$(echo "$nome-finalizado.$RANDOM.key")
    dialog --stdout --title "FINALIZADO" --backtitle "$programa" \
           --ok-label "Curta meus vídeos!" \
           --msgbox "
PÁRABENS $nome!!!!! seu total foi de $total pontos!
Fico feliz que você manja e provávelmente estuda.
criei uma chave para você, poste no meu canal do youtube está chave.
Com está chave eu sei que você conseguiu!

$final" 0 0
else
    dialog --stdout --title "FINALIZADO" --backtitle "$programa" \
           --msgbox "
$nome, isso é vergonhoso! sua pontuação foi de $total.
Se você tem menos de 1 ano de linux eu te dou um desconto!" 0 0
fi
